In networked applications, each completion of a job involving DMA reads from or writes to host memory through a communications link can be communicated back to the host processor through an interrupt. In many applications, such as para-virtualization, taking interrupts on all processor cores may be undesirable in order to preserve the quality of service (QOS) for virtual machines executing on the processor cores. In those applications a dedicated processor for a hypervisor could take the interrupt and schedule the job to a virtual machine without affecting the QOS.
In certain environments, the operating system may be unable to provide many interrupt vectors and yet need to use many queues to distribute the traffic to available CPU cores. Some networking protocols, such as remote direct memory access (RDMA), require many queues (typically more than 64K queues) for point to point communication in applications such as high-performance computing (HPC), cloud storage etc. to reduce latency. Most implementations poll the queues by software, but implementations use asynchronous notification, which requires interrupts. In para-virtualization each virtual core (vCore) can have dedicated queues for sending and receiving packets. However, for QoS a hypervisor may take interrupts on fewer CPU cores or threads and distribute the processing to vCores. Events and interrupts can be aggregated to reduce the number of interrupt vectors.
Interrupt moderation is a technique by which the issuing of interrupts to a host processor is managed in order to avoid overloading the host processor. Moderating interrupts issued as a result of network communications may adversely affect the processing of interrupts from other types of applications. However, without sufficient moderation of interrupts resulting from network communications, the performance of other types of applications may still suffer as a result of barrages of network-triggered interrupts.